// FilterBlock.h
// Dopplar Radar Milestone 1
// RCOS - Griffin Milsap and Sean Austin
#ifndef FILTER_BLOCK_H
#define FILTER_BLOCK_H

#include "Filters/Filter.h"
#include "Signal.h"
#include <list>

class FilterBlock
{
 public:
  // Constructor/Destructor
  FilterBlock();
  ~FilterBlock();

  // Public Interface
  FilterBlock* InsertFilter( Filter &f, int position );
  FilterBlock* AppendFilter( Filter &f );
  FilterBlock* PrependFilter( Filter &f );
  FilterBlock* AddSample( Sample &s );
  bool Initialize();
  Signal* Process();
  FilterBlock* SetWindowSize( int n );
  int WindowSize();

  // Private Variables
 private:
  int mWindowSize;
  std::list< Filter* > mFilters;
  Signal* mpRawSignal;
  Signal* mpProcessedSignal;
};

#endif // FILTER_BLOCK_H

